''' Random Walk Rorschach- Tom Fangrow, 5/11/26. '''
from tkinter import *
import random, time
root = Tk()
root.geometry('1600x1290')
root.title('Random Walk Rorschach')
canvas = Canvas(root, width=1600, height=1200, bg='#AAAAAA', highlightthickness=0)
canvas.grid(row=0, column=0, columnspan=4)
v = StringVar(root, 'square') # pixel shape default is square
def rorschach():
canvas.delete('all') # start with clean canvas
size = size_slider.get() # pixel dimensions: size x size
x = 800 # coordinates of canvas center
y = 600
for i in range(n_slider.get()):
x += size*random.randint(-1, 1) # returns -size, zero, or +size
y += size*random.randint(-1, 1)
if(v.get() == 'circle'): # vget() is radio button selection
canvas.create_oval(x, y, x+size, y+size, fill='#000000')
canvas.create_oval(1600-x, y, 1600-x+size, y+size, fill='#000000')
if(v.get() == 'square'):
canvas.create_rectangle(x, y, x+size, y+size, fill='#000000')
canvas.create_rectangle(1600-x, y, 1600-x+size, y+size, fill='#000000')
time.sleep(.005) # time delay in seconds
canvas.update()
start_button = Button(root, text=' Start New Inkblot ', command=rorschach)
start_button.grid(row=2, column=3, pady=10)
size_slider = Scale(root, from_=2, to=50, orient=HORIZONTAL)
size_slider.grid(row=2, column=0)
size_slider.set(15)
size_label = Label(root, text='pixel size')
size_label.grid(row=3, column=0)
n_slider = Scale(root, from_=20, to=2000, length=500, orient=HORIZONTAL)
n_slider.grid(row=2, column=1)
n_slider.set(300)
n_label = Label(root, text='number of pixels')
n_label.grid(row=3, column=1)
square = Radiobutton(root, text='square pixels', variable=v, value='square')
square.grid(row=2, column=2)
circle = Radiobutton(root, text='round pixels', variable=v, value='circle')
circle.grid(row=3, column=2)
root.mainloop()
Back to Tom Fangrow's Home Page